home *** CD-ROM | disk | FTP | other *** search
- package javax.swing;
-
- import java.awt.AWTEvent;
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Dialog;
- import java.awt.Rectangle;
- import java.awt.Window;
- import java.awt.event.InputEvent;
- import java.awt.event.KeyEvent;
- import java.util.Stack;
-
- public class DefaultFocusManager extends FocusManager {
- Stack history = new Stack();
-
- Component[] childrenTabOrder(Container var1) {
- Component[] var2 = var1.getComponents();
- int var4 = 0;
-
- for(int var6 = var2.length; var4 < var6; ++var4) {
- for(int var5 = var4; var5 < var6; ++var5) {
- if (var4 != var5 && this.compareTabOrder(var2[var5], var2[var4])) {
- Component var3 = var2[var4];
- var2[var4] = var2[var5];
- var2[var5] = var3;
- }
- }
- }
-
- return var2;
- }
-
- void clearHistory() {
- this.history.removeAllElements();
- }
-
- public boolean compareTabOrder(Component var1, Component var2) {
- int var4;
- int var6;
- if (var1 instanceof JComponent) {
- var4 = ((JComponent)var1).getY();
- var6 = ((JComponent)var1).getX();
- } else {
- Rectangle var3 = var1.getBounds();
- var4 = var3.y;
- var6 = var3.x;
- }
-
- int var5;
- int var7;
- if (var2 instanceof JComponent) {
- var5 = ((JComponent)var2).getY();
- var7 = ((JComponent)var2).getX();
- } else {
- Rectangle var8 = var2.getBounds();
- var5 = var8.y;
- var7 = var8.x;
- }
-
- if (Math.abs(var4 - var5) < 10) {
- return var6 < var7;
- } else {
- return var4 < var5;
- }
- }
-
- public void focusNextComponent(Component var1) {
- if (var1 instanceof JComponent) {
- JComponent var2 = (JComponent)var1;
- Container var4 = this.getFocusRoot(var2);
- if (!this.history.empty() && this.history.peek() != var1) {
- this.history.removeAllElements();
- }
-
- if (var4 != null) {
- Component var3 = this.getFocusableComponentAfter(var2, var4, true);
- if (var3 != null) {
- if (this.history.empty() || this.history.peek() == var1) {
- this.history.push(var3);
- }
-
- if (var3 instanceof JComponent) {
- ((JComponent)var3).grabFocus();
- } else {
- var3.requestFocus();
- }
- }
- }
- }
-
- }
-
- public void focusPreviousComponent(Component var1) {
- if (var1 instanceof JComponent) {
- JComponent var2 = (JComponent)var1;
- Container var4 = this.getFocusRoot(var2);
- if (!this.history.empty() && this.history.peek() == var1) {
- this.history.pop();
- if (!this.history.empty()) {
- Component var5 = (Component)this.history.peek();
- if (var5 instanceof JComponent) {
- ((JComponent)var5).grabFocus();
- } else {
- var5.requestFocus();
- }
-
- return;
- }
- }
-
- this.history.removeAllElements();
- if (var4 != null) {
- Component var3 = this.getFocusableComponentAfter(var2, var4, false);
- if (var3 != null) {
- if (var3 instanceof JComponent) {
- ((JComponent)var3).grabFocus();
- } else {
- var3.requestFocus();
- }
- }
- }
- }
-
- }
-
- public Component getComponentAfter(Container var1, Component var2) {
- Component var3;
- return var2 instanceof JComponent && (var3 = ((JComponent)var2).getNextFocusableComponent()) != null ? var3 : this.tabOrderNextComponent(var1, var2);
- }
-
- public Component getComponentBefore(Container var1, Component var2) {
- Component var3;
- return (var3 = this.inverseGetNextFocusable(var1, var2)) != null ? var3 : this.tabOrderPreviousComponent(var1, var2);
- }
-
- private Component getDeepestLastComponent(Component var1) {
- return var1.isVisible() && (var1 instanceof JComponent && !((JComponent)var1).isManagingFocus() || !(var1 instanceof JComponent)) && var1 instanceof Container && ((Container)var1).getComponentCount() > 0 ? this.getDeepestLastComponent(this.getLastComponent((Container)var1)) : var1;
- }
-
- public Component getFirstComponent(Container var1) {
- Component[] var2 = this.childrenTabOrder(var1);
- return var2.length > 0 ? var2[0] : null;
- }
-
- Container getFocusRoot(Component var1) {
- for(Container var2 = var1.getParent(); var2 != null; var2 = ((Component)var2).getParent()) {
- if (var2 instanceof JComponent && ((JComponent)var2).isFocusCycleRoot() || var2 instanceof Window || var2 instanceof Dialog) {
- return var2;
- }
- }
-
- return null;
- }
-
- private Component getFocusableComponentAfter(Component var1, Container var2, boolean var3) {
- Component var5 = var1;
- Component var4 = var1;
-
- do {
- if (var3) {
- var4 = this.getNextComponent(var4, var2, true);
- } else {
- var4 = this.getPreviousComponent(var4, var2);
- }
- } while(var4 != null && var4 != var5 && (!var4.isVisible() || !var4.isFocusTraversable() || !var4.isEnabled()));
-
- return var4;
- }
-
- public Component getLastComponent(Container var1) {
- Component[] var2 = this.childrenTabOrder(var1);
- return var2.length > 0 ? var2[var2.length - 1] : null;
- }
-
- private Component getNextComponent(Component var1, Container var2, boolean var3) {
- Object var4 = null;
- if (var3 && var1.isVisible() && (!(var1 instanceof JComponent) || !((JComponent)var1).isManagingFocus()) && var1 instanceof Container && ((Container)var1).getComponentCount() > 0) {
- return this.getFirstComponent((Container)var1);
- } else {
- Container var5 = var1.getParent();
- Component var6 = this.getComponentAfter(var5, var1);
- if (var6 != null) {
- return var6;
- } else {
- return (Component)(var5 == var2 ? var2 : this.getNextComponent(var5, var2, false));
- }
- }
- }
-
- private Component getPreviousComponent(Component var1, Container var2) {
- Container var3 = var1.getParent();
- if (var1 == var2) {
- return this.getDeepestLastComponent(var2);
- } else {
- Component var4 = this.getComponentBefore(var3, var1);
- return (Component)(var4 != null ? this.getDeepestLastComponent(var4) : var3);
- }
- }
-
- private Component inverseGetNextFocusable(Container var1, Component var2) {
- Component[] var3 = var1.getComponents();
- int var4 = 0;
-
- for(int var5 = var3.length; var4 < var5; ++var4) {
- if (var3[var4] instanceof JComponent && ((JComponent)var3[var4]).getNextFocusableComponent() == var2) {
- return var3[var4];
- }
- }
-
- return null;
- }
-
- public void processKeyEvent(Component var1, KeyEvent var2) {
- if (var2.getKeyCode() == 9 || var2.getKeyChar() == '\t') {
- if (var1 instanceof JComponent) {
- JComponent var3 = (JComponent)var1;
- if (var3.isManagingFocus()) {
- int var4 = ((InputEvent)var2).getModifiers() & 2;
- if (var4 != 2 || var2.getKeyCode() == 73) {
- return;
- }
- }
- }
-
- if (((AWTEvent)var2).getID() != 401) {
- ((InputEvent)var2).consume();
- return;
- }
-
- if ((((InputEvent)var2).getModifiers() & 1) == 1) {
- this.focusPreviousComponent(var1);
- } else {
- this.focusNextComponent(var1);
- }
-
- ((InputEvent)var2).consume();
- }
-
- }
-
- private Component tabOrderNextComponent(Container var1, Component var2) {
- Component[] var3 = this.childrenTabOrder(var1);
- int var5 = var3.length;
- if (var5 == 1) {
- return null;
- } else {
- for(int var4 = 0; var4 < var5 - 1; ++var4) {
- if (var3[var4] == var2) {
- return var3[var4 + 1];
- }
- }
-
- return null;
- }
- }
-
- private Component tabOrderPreviousComponent(Container var1, Component var2) {
- Component[] var3 = this.childrenTabOrder(var1);
- int var5 = var3.length;
- if (var5 == 1) {
- return null;
- } else {
- for(int var4 = 1; var4 < var5; ++var4) {
- if (var3[var4] == var2) {
- return var3[var4 - 1];
- }
- }
-
- return null;
- }
- }
- }
-